import service from './index'

/**
 * 用户登录
 * @param {Object} data - 登录参数
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @param {boolean} data.remember - 是否记住密码
 * @returns {Promise}
 */
export const login = (data) => {
  return service({
    url: '/user/login',
    method: 'post',
    data
  })
}

/**
 * 用户注册
 * @param {Object} data - 注册参数
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @param {string} data.email - 邮箱
 * @param {string} data.phone - 手机号
 * @returns {Promise}
 */
export const register = (data) => {
  return service({
    url: '/user/register',
    method: 'post',
    data
  })
}

/**
 * 获取用户信息
 * @returns {Promise}
 */
export const getUserInfo = () => {
  return service({
    url: '/user/info',
    method: 'get'
  })
}

/**
 * 更新用户信息
 * @param {Object} data - 用户信息
 * @returns {Promise}
 */
export const updateUserInfo = (data) => {
  return service({
    url: '/user/update',
    method: 'put',
    data
  })
}

/**
 * 修改密码
 * @param {Object} data - 密码信息
 * @param {string} data.oldPassword - 旧密码
 * @param {string} data.newPassword - 新密码
 * @returns {Promise}
 */
export const changePassword = (data) => {
  return service({
    url: '/user/change-password',
    method: 'post',
    data
  })
}

/**
 * 上传用户头像
 * @param {FormData} formData - 包含头像文件的FormData
 * @returns {Promise}
 */
export const uploadAvatar = (formData) => {
  return service({
    url: '/user/avatar',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取用户地址列表
 * @returns {Promise}
 */
export const getUserAddresses = () => {
  return service({
    url: '/user/addresses',
    method: 'get'
  })
}

/**
 * 添加用户地址
 * @param {Object} data - 地址信息
 * @returns {Promise}
 */
export const addUserAddress = (data) => {
  return service({
    url: '/user/addresses',
    method: 'post',
    data
  })
}

/**
 * 更新用户地址
 * @param {number} id - 地址ID
 * @param {Object} data - 地址信息
 * @returns {Promise}
 */
export const updateUserAddress = (id, data) => {
  return service({
    url: `/user/addresses/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除用户地址
 * @param {number} id - 地址ID
 * @returns {Promise}
 */
export const deleteUserAddress = (id) => {
  return service({
    url: `/user/addresses/${id}`,
    method: 'delete'
  })
}

/**
 * 获取用户收藏列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise}
 */
export const getUserFavorites = (params) => {
  return service({
    url: '/user/favorites',
    method: 'get',
    params
  })
}

/**
 * 收藏商品
 * @param {number} productId - 商品ID
 * @returns {Promise}
 */
export const addFavorite = (productId) => {
  return service({
    url: '/user/favorites',
    method: 'post',
    data: { productId }
  })
}

/**
 * 取消收藏
 * @param {number} productId - 商品ID
 * @returns {Promise}
 */
export const removeFavorite = (productId) => {
  return service({
    url: `/user/favorites/${productId}`,
    method: 'delete'
  })
}

/**
 * 检查商品是否已收藏
 * @param {number} productId - 商品ID
 * @returns {Promise}
 */
export const checkFavorite = (productId) => {
  return service({
    url: `/user/favorites/check/${productId}`,
    method: 'get'
  })
}

/**
 * 发送验证码
 * @param {string} email - 邮箱地址
 * @returns {Promise}
 */
export const sendVerificationCode = (email) => {
  return service({
    url: '/user/send-code',
    method: 'post',
    data: { email }
  })
}

/**
 * 退出登录
 * @returns {Promise}
 */
export const logout = () => {
  return service({
    url: '/user/logout',
    method: 'post'
  })
}
